package cn.bearspark.api.vo.main.happening;

import cn.bearspark.api.vo.HtmlTextUnparseable;
import cn.bearspark.api.vo.main.user.UserAtVO;
import cn.bearspark.common.enumeration.CommentAbleEnum;
import cn.bearspark.common.enumeration.LikedEnum;
import cn.bearspark.common.enumeration.VisibilityEnum;
import cn.bearspark.happening.dto.happening.BookLiveInfo4Display;
import cn.bearspark.happening.dto.happening.VoteSimpleInfo4Display;
import lombok.Data;

import java.util.List;

/**
 * 动态信息，不包括动态的发布者的用户信息
 *
 * @author f
 */
@Data
public class HappeningInfo implements HtmlTextUnparseable {

    /**
     * 动态的 id
     */
    private Long happeningId;

    /**
     * 动态的标题
     */
    private String title;

    /**
     * 动态的内容，如果为 null，则表示动态已被删除
     */
    private String content;

    /**
     * @ 用户的信息集合
     */
    private List<UserAtVO> atUserInfoList;

    /**
     * 动态的标签内容
     */
    private String tag;

    /**
     * 点赞信息
     */
    private String likeNumInfo;

    /**
     * 评论信息
     */
    private String commentNumInfo;

    /**
     * 转发数量的信息
     */
    private String forwardNumInfo;

    /**
     * 是否已点赞
     *
     * @see LikedEnum
     */
    private Integer liked;

    /**
     * 可见性
     *
     * @see VisibilityEnum
     */
    private Integer visibility;

    /**
     * 可评论性
     *
     * @see CommentAbleEnum
     */
    private Integer commentAble;

    /**
     * 提前发布
     *
     * @see cn.bearspark.happening.enumeration.happening.AdvanceReleaseEnum
     */
    private Integer advanceRelease;

    /**
     * 预约直播的信息
     */
    private BookLiveInfo4Display bookLiveInfo;

    /**
     * 投票的信息
     */
    private VoteSimpleInfo4Display voteSimpleInfo;

    /**
     * 专栏的 id
     */
    private Long articleId;

    /*
        TODO 需要获取这个 id，并且把它们转化成对应的数据
        private Long videoId;       投稿视频的 id
     */

    /**
     * 引用的动态
     */
    private HappeningVO quotedHappening;

    /**
     * 图片的 url 的路径的集合
     */
    private List<String> imgUrlList;

    /**
     * 动态的发布时间信息
     */
    private String pubTimeInfo;

    @Override
    public long id() {
        return happeningId;
    }
}
